package com.system.healthproject.model.doctor.service;

import com.system.healthproject.bean.PagesBean;
import com.system.healthproject.bean.ParamDoctorRegister;
import com.system.healthproject.bean.ResultDoctorConsulting;
import com.system.healthproject.bean.web.*;
import com.system.healthproject.common.ApiResult;
import com.system.healthproject.model.admin.paramsbean.*;

import com.system.healthproject.model.doctor.params.DoctorAddRecordParams;
import com.system.healthproject.model.doctor.params.DoctorNumberParams;
import com.system.healthproject.model.doctor.params.FollowPatientParams;
import com.system.healthproject.model.sickuser.params.UserPatientInfo;

import java.util.List;

public interface DoctorService {


    String login(LoginParams loginParams);


    /**
     * 注册医生账号
     * @param paramDoctorRegister
     * @return
     */
    String registeDoctor(ParamDoctorRegister paramDoctorRegister);

    /**
     * 医生查看自己信息
     * @param loginId
     * @return
     */
    ResultDoctorInfo selectDoctorInfo(Integer loginId);

    /**
     * 医生修改个人信息
     * @param loginId
     * @param updateDoctorInfo
     * @return
     */
    String updateDoctorInfo(Integer loginId, UpdateDoctorInfo updateDoctorInfo);

    /**
     * 查询医生某一天的诊疗活动
     * @param loginId
     * @return
     */
    List<ResultDoctorConsulting> selectDayConsulting(Integer loginId,String date);

    /**
     * 创建诊疗活动--提醒人群--分组信息(提醒人群)
     * @param loginId
     * @return
     */
    List<ResultDoctorGroup> selectDoctorGroup(Integer loginId);

    /**
     * 创建诊疗活动--提醒人群--全部(提醒人群)
     * @param loginId
     * @return
     */
    List<ResultAllPatient> selectAllPatient(Integer loginId);

    /**
     * 医生添加诊疗活动
     * @param loginId
     * @param addConsulting
     * @return
     */
    String addConsulting(Integer loginId, ParamAddConsulting addConsulting);

    DoctorNumberParams doctorGetNumber(Integer loginId);

    DoctorNumberParams doctorGetNumberByProvinceCode(Integer loginId, Integer provinceCode);

    PagesBean<PatientParems> doctorGetPatientList(Integer loginId, Integer page, Integer size);

    PagesBean<FollowPatientParams> doctorGetFollowList(Integer page, Integer size, Integer loginId);

    PagesBean<VisitRecordsShowParams> getVisitRecordsList(int page, int size, int userId);

    List<FrequencyParams> userGetFrequencyList(Integer patientId, int type);

    List<ReactionsParams> userGetReactions(Integer patientId, int type);

    UserPatientInfo getPatientInfo(Integer patientId);

    RecordInfoParams userGetRecordInfo(Integer patientId, int recordId);

    ApiResult<Object> addRecordWithVistRecord(DoctorAddRecordParams params);
}
